let layerIndex;

// 弹出新增或编辑表单
function showTeacherDlg(id) {
    let title = id ? "编辑教师" : "新增教师";  // 判断是否传入 ID 来决定标题

    if (id) {
        // 如果有 id，则是编辑操作
        $.ajax({
            url: `/api/teacher/${id}`,  // 使用字符串模板拼接 URL
            method: "GET",
            success: function (data) {
                $("#teaForm")[0].reset();  // 重置表单，防止缓存旧数据

                // 根据返回的数据填充表单
                $.each(data.data, function (key, value) {
                    var field = $(`#teaForm [name="${key}"]`);
                    if (field.is(":radio")) {
                        field.filter(`[value="${value}"]`).prop("checked", true);  // 单选框选择
                    } else {
                        field.val(value);  // 填充其他表单元素
                    }
                });
            },
            error: function () {
                alert("获取教师数据失败，请重试！");
            }
        });
    } else {
        $("#teaForm")[0].reset();  // 清空表单
    }

    // 弹出层展示表单
    layerIndex = layer.open({
        type: 1,
        title: title,
        area: ["520px", "auto"],
        content: $("#teaForm")
    });
}

// 提交表单数据
function commitTeaDlg() {
    let formData = {};
    $("#teaForm").serializeArray().forEach(item => {
        formData[item.name] = item.value;  // 序列化表单数据为对象
    });

    // 提交表单数据到服务器
    $.ajax({
        url: "/api/teacher/saveOrUpdate",  // 保存或更新接口
        method: "POST",
        contentType: "application/json",
        data: JSON.stringify(formData),  // 将数据转为 JSON 格式
        success: function () {
            layer.closeAll();  // 关闭弹出层
            loadTeacherList();  // 刷新表格
        },
        error: function () {
            alert("提交失败，请检查数据！");
        }
    });
}

// 删除教师
function deleteTeacher(id) {
    if (confirm("确定删除该教师吗？")) {
        $.ajax({
            url: `/api/teacher/delete/${id}`,  // 使用字符串模板拼接 URL
            method: "DELETE",
            success: function () {
                loadTeacherList();  // 删除成功后刷新表格
            },
            error: function () {
                alert("删除失败，请重试！");
            }
        });
    }
}

// 批量删除教师
function deleteSelectedTeachers() {
    var checkStatus = table.checkStatus('tbTeacher');  // 获取当前选中的数据
    var selectedIds = checkStatus.data.map(item => item.id);  // 获取选中的 id 列表

    if (selectedIds.length === 0) {
        alert("请先选择要删除的教师");
        return;
    }

    if (confirm("确定删除选中的教师吗？")) {
        $.ajax({
            url: '/api/teacher/delete',
            method: "POST",
            contentType: "application/json",
            data: JSON.stringify({ ids: selectedIds }),  // 批量删除请求
            success: function () {
                loadTeacherList();  // 删除成功后刷新表格
            },
            error: function () {
                alert("删除失败，请重试！");
            }
        });
    }
}

// 查询功能
function search() {
    let teacher = getSearchCondition();  // 获取查询条件

    const table = layui.table;
    table.reload('tbTeacher', {
        where: { "data": teacher },  // 传递查询条件
        page: { curr: 1 }  // 重置为第一页
    });

    console.log("查询条件: " + JSON.stringify(teacher));  // 打印查询条件用于调试
}

// 获取查询条件
function getSearchCondition() {
    let formData = {};  // 初始化空对象

    // 遍历查询表单中的每个 input 和 select 元素
    $('#queryForm').find('input, select').each(function() {
        let name = $(this).attr('name');
        let value = $(this).val();

        // 只有 name 和 value 都有值时，才添加到 formData
        if (name && value) {
            formData[name] = value;
        }
    });

    return formData;  // 返回查询条件对象
}

// 初始化 layui 表单事件
layui.use(['layer', 'form', 'table'], function () {
    var form = layui.form;
    var table = layui.table;

    // 提交表单事件监听
    form.on("submit(demo-add-teacher)", function (event) {
        event.preventDefault();
        commitTeaDlg();  // 调用提交函数
    });

    // 表格渲染
    const teacher = getSearchCondition();  // 获取查询条件

    // 表格渲染
    table.render({
        elem: '#tbTeacher',  // 表格容器的 ID
        url: '/api/teacher/getByPage',  // 教师数据接口
        method: 'POST',  // 请求方式
        contentType: 'application/json',  // 请求内容类型
        where: { "data": teacher },  // 查询条件
        page: true,  // 开启分页功能
        cols: [[  // 表格列配置
            {type: 'checkbox', fixed: 'left'},  // 复选框列
            {field: 'id', fixed: 'left', width: 80, title: 'ID', sort: true},  // ID 列
            {field: 'name', title: '姓名'},  // 姓名列
            {field: 'sno', title: '职工号', width: 150},  // 职工号列
            {
                field: 'sex',
                width: 80,
                title: '性别',
                templet: function (d) {
                    return d.sex === '1' ? '男' : (d.sex === '2' ? '女' : '未知');
                }
            },
            {
                field: 'position',
                title: '职位',
                width: 150,
                templet: function (d) {
                    return d.position || '未知';
                }
            },
            {
                fixed: 'right',
                title: '操作',
                width: 134,
                minWidth: 125,
                templet: '#editTemplate'  // 使用模板定义操作按钮
            }
        ]],
        done: function(res, curr, count) {
            if (res.code === -999 || !res.data) {
                alert('数据加载失败，请稍后再试！');
                return;
            }
        }
    });

    // 表格工具事件监听
    table.on('tool(tbTeacher)', function(obj) {
        var data = obj.data;

        if (obj.event === 'edit') {
            // 编辑事件处理
            showTeacherDlg(data.id);
        } else if (obj.event === 'delete') {
            // 删除事件处理
            deleteTeacher(data.id);
        }
    });
});
